home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / elm / elm2.4 / hdrs / headers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-08  |  12.6 KB  |  277 lines

  1.  
  2. /* $Id: headers.h,v 5.10 1993/05/08 20:03:12 syd Exp $ */
  3.  
  4. /*******************************************************************************
  5.  *  The Elm Mail System  -  $Revision: 5.10 $   $State: Exp $
  6.  *
  7.  *             Copyright (c) 1988-1992 USENET Community Trust
  8.  *             Copyright (c) 1986,1987 Dave Taylor
  9.  *******************************************************************************
  10.  * Bug reports, patches, comments, suggestions should be sent to:
  11.  *
  12.  *    Syd Weinstein, Elm Coordinator
  13.  *    elm@DSI.COM            dsinc!elm
  14.  *
  15.  *******************************************************************************
  16.  * $Log: headers.h,v $
  17.  * Revision 5.10  1993/05/08  20:03:12  syd
  18.  * add sleepmsg to list
  19.  *
  20.  * Revision 5.9  1993/05/08  18:56:16  syd
  21.  * created a new elmrc variable named "readmsginc".  This specifies an
  22.  * increment by which the message count is updated.  If this variable is
  23.  * set to, say, 25, then the message count will only be updated every 25
  24.  * messages, displaying 0, 25, 50, 75, and so forth.  The default value
  25.  * of 1 will cause Elm to behave exactly as it currently does in PL21.
  26.  * From: Eric Peterson <epeterso@encore.com>
  27.  *
  28.  * Revision 5.8  1993/04/21  01:24:54  syd
  29.  * It's very non-portable, and fairly dangerous, to ass_u_me that you
  30.  * know what's inside a FILE.  So don't #define clearerr().
  31.  * From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  32.  *
  33.  * Revision 5.7  1993/01/20  04:01:07  syd
  34.  * Adds a new integer parameter builtinlines.
  35.  * if (builtinlines < 0) and (the length of the message < LINES on
  36.  *       screen + builtinlines) use internal.
  37.  * if (builtinlines > 0) and (length of message < builtinlines)
  38.  *     use internal pager.
  39.  * if (builtinlines = 0) or none of the above conditions hold, use the
  40.  * external pager if defined.
  41.  * From: "John P. Rouillard" <rouilj@ra.cs.umb.edu>
  42.  *
  43.  * Revision 5.6  1992/10/30  21:47:30  syd
  44.  * Use copy_message in mime shows to get encode processing
  45.  * From: bjoerns@stud.cs.uit.no (Bjoern Stabell)
  46.  *
  47.  * Revision 5.5  1992/10/25  02:38:27  syd
  48.  * Add missing new flags for new elmrc options for confirm
  49.  * From: Syd
  50.  *
  51.  * Revision 5.4  1992/10/24  13:44:41  syd
  52.  * There is now an additional elmrc option "displaycharset", which
  53.  * sets the charset supported on your terminal. This is to prevent
  54.  * elm from calling out to metamail too often.
  55.  * Plus a slight documentation update for MIME composition (added examples)
  56.  * From: Klaus Steinberger <Klaus.Steinberger@Physik.Uni-Muenchen.DE>
  57.  *
  58.  * Revision 5.3  1992/10/24  13:35:39  syd
  59.  * changes found by using codecenter on Elm 2.4.3
  60.  * From: Graham Hudspith <gwh@inmos.co.uk>
  61.  *
  62.  * Revision 5.2  1992/10/17  22:58:57  syd
  63.  * patch to make elm use (or in my case, not use) termcap/terminfo ti/te.
  64.  * From: Graham Hudspith <gwh@inmos.co.uk>
  65.  *
  66.  * Revision 5.1  1992/10/03  22:34:39  syd
  67.  * Initial checkin as of 2.4 Release at PL0
  68.  *
  69.  *
  70.  ******************************************************************************/
  71.  
  72. /**  This is the header file for ELM mail system.  **/
  73.  
  74.  
  75. #include <stdio.h>
  76. #include <fcntl.h>
  77. #include <signal.h>
  78.  
  79. #include "curses.h"
  80. #include "defs.h"
  81.  
  82. #ifdef    BSD
  83. #include <setjmp.h>
  84. #endif
  85.  
  86. #ifdef MIME
  87. #include "mime.h"
  88. #endif
  89.  
  90. /******** global variables accessable by all pieces of the program *******/
  91.  
  92. extern int check_size;        /* don't start mailer if no mail */
  93. extern int current;        /* current message number  */
  94. extern int header_page;         /* current header page     */
  95. extern int inalias;        /* TRUE if in the alias menu */
  96. extern int last_current;    /* previous current message */
  97. extern int last_header_page;    /* last header page        */
  98. extern int message_count;    /* max message number      */
  99. extern int headers_per_page;    /* number of headers/page  */
  100. extern int original_umask;    /* original umask, for restore before subshell */
  101. extern int sendmail_verbose;    /* Allow extended debugging on sendmail */
  102. extern int redraw,         /** do we need to rewrite the entire screen? **/
  103.            nucurr,         /** change list or just the current pointer  **/
  104.            nufoot,         /** clear lines 16 thru bottom and new menu  **/
  105.        readmsginc,        /* msg cnt increment during new mbox read */
  106.        sleepmsg;        /* time to sleep for messages being overwritten on screen */
  107. #ifdef MIME
  108. extern char charset[SLEN];    /* name of character set */
  109. extern char display_charset[SLEN];    /* name of character set */
  110. extern char charset_compatlist[SLEN];    /* list of charsets which are a
  111.                        superset of us-ascii */
  112. extern char text_encoding[SLEN];    /* default encoding for text/plain */
  113. #endif
  114. extern char cur_folder[SLEN];    /* name of current folder */
  115. extern char cur_tempfolder[SLEN]; /* name of temp folder open for a mailbox */
  116. extern char defaultfile[SLEN];    /* name of default folder */
  117. extern char temp_dir[SLEN];     /* name of temp directory */
  118. extern char hostname[SLEN];    /* name of machine we're on*/
  119. extern char hostdomain[SLEN];    /* name of domain we're in */
  120. extern char hostfullname[SLEN]; /* name of FQDN we're in */
  121. extern char item[WLEN];        /* either "message" or "alias" */
  122. extern char items[WLEN];    /* plural: either "messages" or "aliases" */
  123. extern char Item[WLEN];        /* CAP: either "Message" or "Alias" */
  124. extern char Items[WLEN];    /* CAP-plural: either "Messages" or "Aliases" */
  125. extern char Prompt[WLEN];    /* Menu Prompt: either "Command" or "Alias" */
  126. extern char username[SLEN];    /* return address name!    */
  127. extern char full_username[SLEN];/* Full username - gecos   */
  128. extern char home[SLEN];        /* home directory of user  */
  129. extern char folders[SLEN];    /* folder home directory   */
  130. extern char raw_folders[SLEN];    /* unexpanded folder home directory   */
  131. extern char recvd_mail[SLEN];    /* folder for storing received mail    */
  132. extern char raw_recvdmail[SLEN];/* unexpanded recvd_mail name */
  133. extern char editor[SLEN];    /* default editor for mail */
  134. extern char raw_editor[SLEN];    /* unexpanded default editor for mail */
  135. extern char alternative_editor[SLEN];/* the 'other' editor */
  136. extern char printout[SLEN];    /* how to print messages   */
  137. extern char raw_printout[SLEN];    /* unexpanded how to print messages   */
  138. extern char sent_mail[SLEN];    /* name of file to save copies to */
  139. extern char raw_sentmail[SLEN];    /* unexpanded name of file to save to */
  140. extern char calendar_file[SLEN];/* name of file for clndr  */
  141. extern char raw_calendar_file[SLEN];/* unexpanded name of file for clndr  */
  142. extern char attribution[SLEN];  /* attribution string for replies     */
  143. extern char prefixchars[SLEN];    /* prefix char(s) for msgs */
  144. extern char shell[SLEN];    /* default system shell    */
  145. extern char raw_shell[SLEN];    /* unexpanded default system shell    */
  146. extern char pager[SLEN];    /* what pager to use...    */
  147. extern char raw_pager[SLEN];    /* unexpanded what pager to use...    */
  148. extern char batch_subject[SLEN];/* subject buffer for batchmail */
  149. extern char included_file[SLEN];/* name of file to place in edit buf */
  150. extern char local_signature[SLEN];/* local msg signature file   */
  151. extern char raw_local_signature[SLEN];/* unexpanded local msg signature file */
  152. extern char remote_signature[SLEN];/* remote msg signature file */
  153. extern char raw_remote_signature[SLEN];/* unexpanded remote msg signature file*/
  154. extern char version_buff[NLEN]; /* version buffer */
  155. extern char e_editor[SLEN];    /* "~e" editor...   */
  156. extern char v_editor[SLEN];    /* "~v" editor...   */
  157. extern char config_options[SLEN];    /* which options are in o)ptions */
  158. extern char allowed_precedences[SLEN];    /* list of precedences user may specify */
  159. extern char *def_ans_yes;    /* default yes answer - single char, lc    */
  160. extern char *def_ans_no;    /* default no answer - single char, lc    */
  161. extern char *nls_deleted;    /* [deleted] */
  162. extern char *nls_form;        /* Form */
  163. extern char *nls_message;    /* Message */
  164. extern char *nls_to;        /* To */
  165. extern char *nls_from;        /* From */
  166. extern char *nls_page;        /* Page */
  167. extern char *change_word;    /* change */
  168. extern char *save_word;        /* save */
  169. extern char *copy_word;        /* copy */
  170. extern char *cap_save_word;    /* Save */
  171. extern char *cap_copy_word;    /* Copy */
  172. extern char *saved_word;    /* saved */
  173. extern char *copied_word;    /* copied */
  174.  
  175. extern char backspace,        /* the current backspace char  */
  176.         escape_char,    /* '~' or something else...    */
  177.         kill_line;        /* the current kill_line char  */
  178.  
  179. extern char up[SHORT], 
  180.         down[SHORT],
  181.         left[SHORT],
  182.         right[SHORT];    /* cursor control seq's    */
  183. extern int  cursor_control;    /* cursor control avail?   */
  184.  
  185. extern int  has_highlighting;    /* highlighting available? */
  186.  
  187. /** the following two are for arbitrary weedout lists.. **/
  188.  
  189. extern char *weedlist[MAX_IN_WEEDLIST];
  190. extern int  weedcount;        /* how many headers to check?        */
  191.  
  192. extern int  allow_forms;    /* flag: are AT&T Mail forms okay?    */
  193. extern int  prompt_after_pager;    /* flag: prompt after pager exits     */
  194. extern int  mini_menu;        /* flag: display menu?               */
  195. extern int  metoo;        /* flag: copy me on mail to alias?    */
  196. extern int  folder_type;    /* flag: type of folder              */
  197. extern int  auto_copy;        /* flag: auto copy source into reply? */
  198. extern int  filter;        /* flag: weed out header lines?          */
  199. extern int  resolve_mode;    /* flag: resolve before moving mode?  */
  200. extern int  auto_cc;        /* flag: mail copy to yourself?       */
  201. extern int  noheader;        /* flag: copy + header to file?       */
  202. extern int  title_messages;    /* flag: title message display?       */
  203. extern int  forwarding;        /* flag: are we forwarding the msg?   */
  204. extern int  hp_terminal;    /* flag: are we on an hp terminal?    */
  205. extern int  hp_softkeys;    /* flag: are there softkeys?          */
  206. extern int  save_by_name;      /* flag: save mail by login name?     */
  207. extern int  force_name;        /* flag: save by name forced?          */
  208. extern int  mail_only;        /* flag: send mail then leave?        */
  209. extern int  check_only;        /* flag: check aliases and leave?     */
  210. extern int  batch_only;        /* flag: send without prompting?      */
  211. extern int  move_when_paged;    /* flag: move when '+' or '-' used?   */
  212. extern int  point_to_new;    /* flag: start pointing at new msgs?  */
  213. extern int  builtin_lines;    /* int use builtin pager?             */
  214. extern int  bounceback;        /* flag: bounce copy off remote?      */
  215. extern int  always_keep;    /* flag: always keep unread msgs?     */
  216. extern int  always_store;    /* flag: always store read mail?      */
  217. extern int  always_del;        /* flag: always delete marked msgs?   */
  218. extern int  arrow_cursor;    /* flag: use "->" regardless?          */
  219. extern int  debug;        /* flag: debugging mode on?           */
  220. extern int  user_level;        /* flag: how knowledgable is user?    */
  221. extern int  selected;        /* flag: used for select stuff        */
  222. extern int  names_only;        /* flag: display names but no addrs?  */
  223. extern int  question_me;    /* flag: ask questions as we leave?   */
  224. extern int  keep_empty_files;    /* flag: keep empty files??          */
  225. extern int  clear_pages;    /* flag: clear screen w/ builtin pgr? */
  226. extern int  prompt_for_cc;    /* flag: prompt user for 'cc' value?  */
  227. extern int  sig_dashes;        /* flag: put dashes above signature?  */
  228. extern int  use_tite;        /* flag: use termcap/terminfo ti/te?  */
  229. extern int  confirm_append;    /* flag: confirm append to folder?    */
  230. extern int  confirm_create;    /* flag: confirm create new folder?   */
  231. extern int  confirm_files;    /* flag: confirm files for append?    */
  232. extern int  confirm_folders;    /* flag: confirm folders for create?  */
  233.  
  234. extern int  sortby;        /* how to sort folders          */
  235. extern int  alias_sortby;    /* how to sort aliases        */
  236.  
  237. extern long timeout;        /* seconds for main level timeout     */
  238.  
  239. extern int LINES;        /** lines per screen    **/
  240. extern int COLUMNS;        /** columns per line    **/
  241. #ifdef SIGWINCH
  242. extern int resize_screen;    /** SIGWINCH occured?   **/
  243. #endif
  244.  
  245. extern long size_of_pathfd;    /** size of pathfile, 0 if none **/
  246.  
  247. extern FILE *mailfile;        /* current folder         */
  248. extern FILE *debugfile;        /* file for debut output    */
  249. extern FILE *pathfd;        /* path alias file          */
  250. extern FILE *domainfd;        /* domains file         */
  251. extern nl_catd elm_msg_cat;    /* message catalog        */
  252.  
  253. extern long mailfile_size;    /* size of current mailfile */
  254.  
  255. extern int  max_headers;    /* number of headers currently allocated */
  256.  
  257. extern struct header_rec **headers; /* array of header structure pointers */
  258.  
  259. extern struct alias_rec **aliases; /* for the alias menu */
  260. extern int    max_aliases;    /* number of aliases allocated */
  261.  
  262. extern struct addr_rec *alternative_addresses;    /* how else do we get mail? */
  263.  
  264. extern int system_data;        /* fileno of system data file */
  265. extern int user_data;        /* fileno of user data file   */
  266.  
  267. extern int userid;        /* uid for current user          */
  268. extern int groupid;        /* groupid for current user   */
  269. #ifdef SAVE_GROUP_MAILBOX_ID
  270. extern int mailgroupid;        /* groupid for current user   */
  271. #endif
  272.  
  273. #ifdef    BSD
  274. extern jmp_buf GetPromptBuf;    /* setjmp buffer */
  275. extern int InGetPrompt;        /* set if in GetPrompt() in read() */
  276. #endif
  277.